6
תגובות

תיקיות ב htaccess

פתח Ben ,
היי.
יש לי תיקייה בשם templates ששם נמצאים כל הקבצים שלי,
על מנת שהכתובת לא תיהיה site.com/templates/page.php, דרך קובץ htaccess אני מנווט ל site.com/page.htm.
הבעיה היא שכאשר נכנסים לתיקיה site.com/templates רואים היררכיה של כל הקבצים שנמצאים שם, ואני לא רוצה לאפשר את זה.
האם ישנה דרך לחסום את הגישה ל templates, או שלא יראו את היררכית הקבצים ?

6 תשובות

avatar ענה OrelBeY ב 01 לפברואר 2014 #

אם אתה רוצה לנווט את כל האתר שלך לתיקייה הזאת, תכתוב את זה:

RewriteEngine On
RewriteRule ^(.*)$ /templates/$1 [L,QSA]


אם זה לא כל האתר שלך ואתה רוצה להמשיך בדרך שלך, תכתוב בקובץ .htaccess שב-templates:
Options -Indexes

זה יוריד את רשימת התיקיות והקבצים לאותה תיקייה.

קח בחשבון שעדיין יוכלו להיכנס לקובץ שם באופן ישיר.
דרך להימנע מזה היא פשוט לייבא את הקבצים לקובץ ה-PHP ולחסום בכלל גישה מבחוץ לתיקייה - 403. (או לעשות כאילו התיקייה לא קיימת, ולהחזיר 404; לא קובץ שגיאת 404, אלא באמת Header של 404 כדי שלא יהיה אפשר לדעת מבחוץ שהתיקייה הזאת קיימת.)

avatar ענה yonikal56 ב 01 לפברואר 2014 #

Redirect 301 /tampletas /errors/403.html


תנסה את זה

avatar ענה Ben ב 01 לפברואר 2014 #

@yonikal56, לא טוב.
@OrelBeY, השתמשתי ב -

Options -Indexes


גם כשאני מחזיר שגיאה 404 יש לי אפשרות לגשת לקובץ...

avatar ענה OrelBeY ב 01 לפברואר 2014 #

אם אתה רוצה שזה יקרה רק בגישה לתיקייה ולא בגישה לקבצים/תיקיות שבאותה תיקייה (לא שאתה אמור לרצות את זה):

RewriteRule ^(/?)$ return-404.php [L,QSA]


אם אתה רוצה להעלים את התיקייה ואת כל מה שיש בה מהרדאר. אף אחד לא ידע שזה שם:
RewriteRule ^(.*)$ return-404.php [L,QSA]


מה שעשינו פה זה לקחת את הבקשות האלה ולהעביר אותם (פנימית, בלי שהגולש ידע) לטיפול הקובץ return-404.php. מהקובץ הזה נחזיר את שגיאת ה-404:
<?php

header('HTTP/1.0 404 Not Found');
exit;

avatar ענה Ben ב 01 לפברואר 2014 #

אבל הבעיה שאם אני מעלים את התיקיה מהאדאר:

RewriteRule ^(.*)$ return-404.php [L,QSA]


אני לא יכול לגשת לקבצים שבתוכה בכלל.
הכוונה שלי הייתה שלא אוכל לגלוש לקובץ page ככה:
site.com/tampletas/page.php

אלא רק -
site.com/page.htm

avatar ענה OrelBeY ב 01 לפברואר 2014 #

אבל יש את זה לפני זה:

RewriteRule ^page(/?)$ /templates/page.php[L,QSA]

כך שה-404 יוחזר רק מגישה ישירה ל-templates מבחוץ, ולא מתוך השרת שלך.